import datetime

from django.core.management import BaseCommand

from core.models import SysMenu, SysDept, SysRole, SysUser, SysUserRole, SysDictType, SysDictData, SysConfig


class Command(BaseCommand):
    help = '初始化系统数据'

    def add_arguments(self, parser):
        parser.add_argument('--username', type=str, help='管理员用户名')
        parser.add_argument('--password', type=str, help='管理员密码')

    def handle(self, *args, **options):
        print('================正在初始化系统数据================')
        username = options.get('username') or 'admin'
        password = options.get('password') or '123456'

        base_model = {
            'is_delete': False,
            'remark': '',
            'create_time': datetime.datetime.now(),
            'create_by': 'admin',
            'update_time': datetime.datetime.now(),
            'update_by': 'admin'
        }

        # 初始化数据字典数据
        data_type_dict = [
            {
                'dict_id': 1,
                'dict_name': '用户性别',
                'dict_type': 'sys_user_sex'
            },
            {
                'dict_id': 2,
                'dict_name': '菜单状态',
                'dict_type': 'sys_show_hide'
            },
            {
                'dict_id': 3,
                'dict_name': '系统开关',
                'dict_type': 'sys_normal_disable'
            },
            {
                'dict_id': 4,
                'dict_name': '任务状态',
                'dict_type': 'sys_job_status'
            },
            {
                'dict_id': 5,
                'dict_name': '任务分组',
                'dict_type': 'sys_job_group'
            },
            {
                'dict_id': 6,
                'dict_name': '系统是否',
                'dict_type': 'sys_yes_no'
            },
            {
                'dict_id': 7,
                'dict_name': '通知类型',
                'dict_type': 'sys_notice_type'
            },
            {
                'dict_id': 8,
                'dict_name': '通知状态',
                'dict_type': 'sys_notice_status'
            },
            {
                'dict_id': 9,
                'dict_name': '操作类型',
                'dict_type': 'sys_oper_type'
            },
            {
                'dict_id': 10,
                'dict_name': '系统状态',
                'dict_type': 'sys_common_status'
            },
        ]
        SysDictType.objects.bulk_create([SysDictType(**data, **base_model) for data in data_type_dict])
        print('-> sys_dict_type')
        dict_types = SysDictType.objects.all()

        # 初始化字典数据
        dict_data = [
            {
                'dict_code': 1,
                'dict_sort': 1,
                'dict_label': '男',
                'dict_value': '0',
                'dict_type': dict_types[0],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 2,
                'dict_sort': 2,
                'dict_label': '女',
                'dict_value': '1',
                'dict_type': dict_types[0],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 3,
                'dict_sort': 3,
                'dict_label': '未知',
                'dict_value': '2',
                'dict_type': dict_types[0],
                'css_class': '',
                'list_class': 'warning',
                'is_default': 'N'
            },
            {
                'dict_code': 4,
                'dict_sort': 1,
                'dict_label': '显示',
                'dict_value': '0',
                'dict_type': dict_types[1],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 5,
                'dict_sort': 2,
                'dict_label': '隐藏',
                'dict_value': '1',
                'dict_type': dict_types[1],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 6,
                'dict_sort': 1,
                'dict_label': '正常',
                'dict_value': '0',
                'dict_type': dict_types[2],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 7,
                'dict_sort': 2,
                'dict_label': '停用',
                'dict_value': '1',
                'dict_type': dict_types[2],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 8,
                'dict_sort': 1,
                'dict_label': '正常',
                'dict_value': '1',
                'dict_type': dict_types[3],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 9,
                'dict_sort': 2,
                'dict_label': '暂停',
                'dict_value': '1',
                'dict_type': dict_types[3],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 10,
                'dict_sort': 1,
                'dict_label': '默认',
                'dict_value': 'DEFAULT',
                'dict_type': dict_types[4],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'N'
            },
            {
                'dict_code': 11,
                'dict_sort': 2,
                'dict_label': '系统',
                'dict_value': 'SYSTEM',
                'dict_type': dict_types[4],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'N'
            },
            {
                'dict_code': 12,
                'dict_sort': 1,
                'dict_label': '是',
                'dict_value': 'Y',
                'dict_type': dict_types[5],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 13,
                'dict_sort': 2,
                'dict_label': '否',
                'dict_value': 'N',
                'dict_type': dict_types[5],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 14,
                'dict_sort': 1,
                'dict_label': '通知',
                'dict_value': '1',
                'dict_type': dict_types[6],
                'css_class': '',
                'list_class': 'warning',
                'is_default': 'Y'
            },
            {
                'dict_code': 15,
                'dict_sort': 2,
                'dict_label': '公告',
                'dict_value': '2',
                'dict_type': dict_types[6],
                'css_class': '',
                'list_class': 'success',
                'is_default': 'N'
            },
            {
                'dict_code': 16,
                'dict_sort': 1,
                'dict_label': '正常',
                'dict_value': '0',
                'dict_type': dict_types[7],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'Y'
            },
            {
                'dict_code': 17,
                'dict_sort': 2,
                'dict_label': '关闭',
                'dict_value': '1',
                'dict_type': dict_types[7],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 18,
                'dict_sort': 1,
                'dict_label': '新增',
                'dict_value': '1',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'info',
                'is_default': 'N'
            },
            {
                'dict_code': 19,
                'dict_sort': 2,
                'dict_label': '修改',
                'dict_value': '2',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'info',
                'is_default': 'N'
            },
            {
                'dict_code': 20,
                'dict_sort': 3,
                'dict_label': '删除',
                'dict_value': '3',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 21,
                'dict_sort': 4,
                'dict_label': '授权',
                'dict_value': '4',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'primary',
                'is_default': 'N'
            },
            {
                'dict_code': 22,
                'dict_sort': 5,
                'dict_label': '导出',
                'dict_value': '5',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'warning',
                'is_default': 'N'
            },
            {
                'dict_code': 23,
                'dict_sort': 6,
                'dict_label': '导入',
                'dict_value': '6',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'warning',
                'is_default': 'N'
            },
            {
                'dict_code': 24,
                'dict_sort': 7,
                'dict_label': '强退',
                'dict_value': '7',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 25,
                'dict_sort': 8,
                'dict_label': '清空数据',
                'dict_value': '8',
                'dict_type': dict_types[8],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
            {
                'dict_code': 26,
                'dict_sort': 1,
                'dict_label': '成功',
                'dict_value': '0',
                'dict_type': dict_types[9],
                'css_class': '',
                'list_class': 'success',
                'is_default': 'Y'
            },
            {
                'dict_code': 27,
                'dict_sort': 2,
                'dict_label': '失败',
                'dict_value': '1',
                'dict_type': dict_types[9],
                'css_class': '',
                'list_class': 'danger',
                'is_default': 'N'
            },
        ]
        SysDictData.objects.bulk_create([SysDictData(**data, **base_model) for data in dict_data])
        print('-> sys_dict_data')

        # 初始化参数设置
        SysConfig.objects.create(**{
            'config_id': 1,
            'config_name': '用户初始化密码',
            'config_key': 'sys.user.initPassword',
            'config_value': '123456',
        }, **base_model)
        print('-> sys_config')

        # 初始化菜单数据
        menus = [
            {
                'menu_id': 1,
                'menu_name': '系统管理',
                'parent_id': 0,
                'order_num': 0,
                'path': 'system',
                'component': 'Layout',
                'component_name': None,
                'menu_type': 'M',
                'visible': '0',
                'perms': '',
                'icon': '系统管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 用户管理
            {
                'menu_id': 2,
                'menu_name': '用户管理',
                'parent_id': 1,
                'order_num': 1,
                'path': 'user',
                'component': 'system/user/index',
                'component_name': 'User',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:user:list',
                'icon': '用户管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 3,
                'menu_name': '用户查询',
                'parent_id': 2,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 4,
                'menu_name': '用户新增',
                'parent_id': 2,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 5,
                'menu_name': '用户修改',
                'parent_id': 2,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 6,
                'menu_name': '用户删除',
                'parent_id': 2,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 7,
                'menu_name': '用户导入',
                'parent_id': 2,
                'order_num': 5,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:import',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 8,
                'menu_name': '用户导出',
                'parent_id': 2,
                'order_num': 6,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:export',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 9,
                'menu_name': '重置密码',
                'parent_id': 2,
                'order_num': 7,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:user:resetPwd',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 角色管理
            {
                'menu_id': 10,
                'menu_name': '角色管理',
                'parent_id': 1,
                'order_num': 2,
                'path': 'role',
                'component': 'system/role/index',
                'component_name': 'Role',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:role:list',
                'icon': '角色管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 11,
                'menu_name': '角色查询',
                'parent_id': 10,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:role:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 12,
                'menu_name': '角色新增',
                'parent_id': 10,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:role:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 13,
                'menu_name': '角色修改',
                'parent_id': 10,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:role:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 14,
                'menu_name': '角色删除',
                'parent_id': 10,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:role:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 15,
                'menu_name': '角色导出',
                'parent_id': 10,
                'order_num': 5,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:role:export',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 菜单管理
            {
                'menu_id': 16,
                'menu_name': '菜单管理',
                'parent_id': 1,
                'order_num': 3,
                'path': 'menu',
                'component': 'system/menu/index',
                'component_name': 'Menu',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:menu:list',
                'icon': '菜单管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 17,
                'menu_name': '菜单查询',
                'parent_id': 16,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:menu:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 18,
                'menu_name': '菜单新增',
                'parent_id': 16,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:menu:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 19,
                'menu_name': '菜单修改',
                'parent_id': 16,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:menu:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 20,
                'menu_name': '菜单删除',
                'parent_id': 16,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:menu:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 部门管理
            {
                'menu_id': 21,
                'menu_name': '部门管理',
                'parent_id': 1,
                'order_num': 4,
                'path': 'dept',
                'component': 'system/role/index',
                'component_name': 'Role',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:role:list',
                'icon': '部门管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 22,
                'menu_name': '部门查询',
                'parent_id': 21,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dept:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 23,
                'menu_name': '部门新增',
                'parent_id': 21,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dept:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 24,
                'menu_name': '部门修改',
                'parent_id': 21,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dept:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 25,
                'menu_name': '部门删除',
                'parent_id': 21,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dept:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 岗位管理
            {
                'menu_id': 26,
                'menu_name': '岗位管理',
                'parent_id': 1,
                'order_num': 5,
                'path': 'post',
                'component': 'system/post/index',
                'component_name': 'Post',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:post:list',
                'icon': '岗位管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 27,
                'menu_name': '岗位查询',
                'parent_id': 26,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:post:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 28,
                'menu_name': '岗位新增',
                'parent_id': 26,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:post:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 29,
                'menu_name': '岗位修改',
                'parent_id': 26,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:post:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 30,
                'menu_name': '岗位删除',
                'parent_id': 26,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:post:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 31,
                'menu_name': '岗位导出',
                'parent_id': 26,
                'order_num': 5,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:post:export',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 字典管理
            {
                'menu_id': 32,
                'menu_name': '字典管理',
                'parent_id': 1,
                'order_num': 6,
                'path': 'dict',
                'component': 'system/dict/index',
                'component_name': 'Dict',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:dict:list',
                'icon': '字典管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 33,
                'menu_name': '字典查询',
                'parent_id': 32,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dict:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 34,
                'menu_name': '字典新增',
                'parent_id': 32,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dict:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 35,
                'menu_name': '字典修改',
                'parent_id': 32,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dict:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 36,
                'menu_name': '字典删除',
                'parent_id': 32,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dict:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 37,
                'menu_name': '字典导出',
                'parent_id': 32,
                'order_num': 5,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:dict:export',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 参数设置
            {
                'menu_id': 38,
                'menu_name': '参数设置',
                'parent_id': 1,
                'order_num': 7,
                'path': 'config',
                'component': 'system/config/index',
                'component_name': 'Config',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:config:list',
                'icon': '参数设置_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 39,
                'menu_name': '参数查询',
                'parent_id': 38,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:config:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 40,
                'menu_name': '参数新增',
                'parent_id': 38,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:config:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 41,
                'menu_name': '参数修改',
                'parent_id': 38,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:config:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 42,
                'menu_name': '参数删除',
                'parent_id': 38,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:config:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 43,
                'menu_name': '参数导出',
                'parent_id': 38,
                'order_num': 5,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:config:export',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            # 通知公告
            {
                'menu_id': 44,
                'menu_name': '通知公告',
                'parent_id': 1,
                'order_num': 8,
                'path': 'notice',
                'component': 'system/notice/index',
                'component_name': 'Notice',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'system:notice:list',
                'icon': '通知公告_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 45,
                'menu_name': '公告查询',
                'parent_id': 44,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:notice:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 46,
                'menu_name': '公告新增',
                'parent_id': 44,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:notice:add',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 47,
                'menu_name': '公告修改',
                'parent_id': 44,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:notice:edit',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 48,
                'menu_name': '公告删除',
                'parent_id': 44,
                'order_num': 4,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:notice:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 49,
                'menu_name': '日志管理',
                'parent_id': 1,
                'order_num': 9,
                'path': 'log',
                'component': 'monitor/log/index',
                'component_name': 'Log',
                'menu_type': 'M',
                'visible': '0',
                'perms': '',
                'icon': '日志管理_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 50,
                'menu_name': '操作日志',
                'parent_id': 49,
                'order_num': 1,
                'path': 'operlog',
                'component': 'monitor/operlog/index',
                'component_name': 'Operlog',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'monitor:operlog:list',
                'icon': '操作日志_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 51,
                'menu_name': '操作查询',
                'parent_id': 50,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:operlog:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 52,
                'menu_name': '操作删除',
                'parent_id': 50,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:operlog:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 53,
                'menu_name': '日志导出',
                'parent_id': 50,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:operlog:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 54,
                'menu_name': '登录日志',
                'parent_id': 49,
                'order_num': 2,
                'path': 'logininfor',
                'component': 'monitor/logininfor/index',
                'component_name': 'Logininfor',
                'menu_type': 'C',
                'visible': '0',
                'perms': 'monitor:logininfor:list',
                'icon': '登录日志_2',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 55,
                'menu_name': '登录查询',
                'parent_id': 54,
                'order_num': 1,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:logininfor:query',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 56,
                'menu_name': '登录删除',
                'parent_id': 54,
                'order_num': 2,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:logininfor:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            },
            {
                'menu_id': 57,
                'menu_name': '日志导出',
                'parent_id': 54,
                'order_num': 3,
                'path': '',
                'component': '',
                'component_name': '',
                'menu_type': 'F',
                'visible': '0',
                'perms': 'system:logininfor:remove',
                'icon': '#',
                'is_frame': 1,
                'no_cache': False,
                'affix': False,
                'breadcrumb': False,
                'status': '0'
            }
        ]
        SysMenu.objects.bulk_create([SysMenu(**data, **base_model) for data in menus])
        print('-> sys_menu')

        # 初始化部门数据
        SysDept.objects.create(**{
            'dept_id': 1,
            'parent_id': 0,
            'dept_name': '若依科技',
            'ancestors': None,
            'order_num': 1,
            'leader': '超级管理员',
            'phone': '13697169182',
            'email': '690126048@qq.com',
            'status': '0'
        }, **base_model)
        print('-> sys_dept')

        # 初始化角色数据
        role = SysRole.objects.create(**{
            'role_id': 1,
            'role_name': '管理员',
            'role_key': 'admin',
            'role_sort': 1,
            'data_scope': '1',
            'dept_check_strictly': True,
            'menu_check_strictly': True,
            'status': '0'
        }, **base_model)
        print('-> sys_role')

        # 初始化用户数据
        user = SysUser(**{
            'user_id': 1,
            'username': username,
            'nickname': '超级管理员',
            'email': '690126048@qq.com',
            'is_staff': True,
            'is_superuser': True
        }, **base_model)
        user.set_password(password)
        user.save()
        print('-> sys_user')

        # 初始化用户角色数据
        SysUserRole.objects.create(
            user=user,
            role=role
        )
        print('================系统数据初始化成功！================')
        print('管理员 用户名：%s 密码：%s' % (username, password))
